import java.util.ArrayList;
import java.util.Iterator;

public class Traverse {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        //1.通过下标遍历
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }

        //2.通过foreach遍历(通过增强for遍历)
        //num就会依次被赋值为list中的元素
        //这里的num只能用来“读”，不能用来“写”
        //foreach遍历的本质是对ArrayList的iterator()方法的调用
        for(Integer num:list){
            System.out.println(num);
            //此处的num是局部变量，不会影响list中的元素
            num = 10;
        }

        //3.通过迭代器遍历
        //iterator()方法返回一个Iterator对象，该对象实现了Iterable接口
        //Iterable接口的iterator()方法返回一个Iterator对象，该对象用于遍历集合中的元素
        //Iterator接口的hasNext()方法用于判断是否还有下一个元素
        //Iterator接口的next()方法用于获取下一个元素
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}
